/**
 * 创建人:  @author huangpeng    
 * 创建时间:  2022年09月12日 19:31
 * 项目名称:  lemon-blog-cloud
 * 文件名称:  SystemFeignClient
 * 文件描述:  @Description: 调用主系统服务
 * 公司名称:  柠檬
 *
 * All rights Reserved, Designed By 柠檬 
 * @Copyright: 2022-2022
 *
 */
package com.lemon.message.service.feign;

import com.lemon.common.core.constant.SecurityConstants;
import com.lemon.common.core.domain.Result;
import com.lemon.common.core.web.domain.AjaxResult;
import com.lemon.message.service.feign.Hystrix.SystemFeignClientHystrix;
import com.lemon.system.api.model.LoginUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 包名称：com.lemon.blog.service.feign
 * 类名称：SystemFeignClient
 * 类描述：调用主系统服务
 * 创建人：@author huangpeng
 * 创建时间：2022年09月12日 19:31
 */
@FeignClient(name = "lemon-system", fallbackFactory = SystemFeignClientHystrix.class)
public interface SystemFeignClient {

    /**
     * 根据要素编码获取要素值
     * @Title: getElValueByElCodeAndFCode
     * @Description: 根据要素编码获取要素值
     * @param elementCode 要输编码
     * @param functionCode 功能代码
     * @return: AjaxResult
     * @throws:
     * @author: huangpeng
     * @Date: 2023/11/18 18:17
     */
    @GetMapping("api/system/elements/getElValueByElCodeAndFCode")
    AjaxResult getElValueByElCodeAndFCode(@RequestParam(value = "elementCode") String elementCode,
                                          @RequestParam(value = "functionCode") String functionCode);

    /**
     * 通过邮箱查询用户信息，前台
     * @Title: getInfoByEmail
     * @Description: 通过邮箱查询用户信息，前台
     * @param email 邮箱地址
     * @param source
     * @return: R<LoginUserWeb>
     * @throws:
     * @author: huangpeng
     * @Date: 2023/5/3 17:06
     */
    @GetMapping("api/system/baseUser/getInfoByEmail/{email}")
    Result<LoginUser> getInfoByEmail(@PathVariable("email") String email, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
